<?php

require_once('../krn_table.php');
require_once('../commons_constantes.php');
require_once('../commons_atom.php');

tableDefinition
	(TABLE_DEFINITION
	,'tblStatut'
	,WEDDING_DBNAME
	,'STATUT'
	,array
		('ID'
		,'CODE'
		,'LIBELLE'
		)
	);
	
	
/***********************************************************************************************************
 * Définition des fonctions d'interactions
 ***********************************************************************************************************/

/**
 * Retourne le tableau associatif du statut d'identifiant $idStatut.<br />
 * Retourne un tableau vide si le statut d'identifiant $idStatut n'existe pas
 * @param $idLivreOr identifiant du statut cherché
 * @return array : un tableau vide ou associatif nom de colonne - valeur
 * @throws Exception : code 406 (plusieurs ressources)
 */
function getStatutById($idStatut) {
	$statut = select('tblStatut', '*', 'WHERE ID = ?', array($idStatut));
	if (count($statut) > 1) {
		throw new Exception('Plusieurs statuts d\'identifiant '.$idStatut.' ont été retournés', ERR_NOT_ACCEPTABLE);
	} elseif (count($statut) == 1) {
		return $statut[0];
	}
	return $statut;
}

/**
 * Retourne le tableau associatif du statut de code $codeStatut.<br />
 * Retourne un tableau vide si le statut de code $codeStatut n'existe pas
 * @param $codeStatut Code du statut cherché
 * @return array : un tableau vide ou associatif nom de colonne - valeur
 * @throws Exception : code 406 (plusieurs ressources)
 */
function getStatutByCode($codeStatut) {
	$statut = select('tblStatut', '*', 'WHERE CODE = ?', array($codeStatut));
	if (count($statut) > 1) {
		throw new Exception('Plusieurs statuts de code '.$codeStatut.' ont été retournés', ERR_NOT_ACCEPTABLE);
	} elseif (count($statut) == 1) {
		return $statut[0];
	}
	return $statut;
}

/**
 * Retourne la liste des statuts
 * @return array : liste vide ou liste des statuts disponibles
 */
function getListeStatut() {
	$selQuery = 'SELECT * FROM '.tableNameGet('tblStatut').' ORDER BY ID';
	$listStatut = executeSelectQuery('tblStatut', $selQuery, null);
	return $listStatut;
}

/**
 * Retourne un tableau associatif de code statut et d'identifiant correspondant
 * @return array : tableau associatif de code statut et d'identifiant correspondant
 */
function getAllIdStatutByCode() {
	static $idStatutByCode = null;
	if (!is_null($idStatutByCode)) {
		return $idStatutByCode;
	}
	
	$idStatutByCode = array();
	$listStatut = getListeStatut();
	foreach ($listStatut as $aryStatut) {
		$idStatutByCode[$aryStatut['CODE']] = $aryStatut['ID'];
	}
	return $idStatutByCode;
}
	